var sp ={
	attr_spec:{},
	// 编辑商品时库存信息
	edit_stock_info:{},
	// 自动更新库存总数
	upTotalStock:function(){
		$('.stock [name*=num]').live('blur', function() {
			var n = 0;
			$('.stock [name*=num]').each(function(){
				var v = parseInt($(this).val());
				if(v) n+=v;
			});
			$('[name=goods_stock]').attr('readonly','readonly').css('background','#E5E5E5').val(n);
		});
	},
	upPrice:function(){
		$('.stock [name*=price]').live('blur', function() {
			var n = 100000;
			$('.stock [name*=price]').each(function(){
				var v = parseFloat($(this).val());
				if(v<n) n=v;
			});
			if(n==100000) n=0;
			$('[name=goods_price]').attr('readonly','readonly').css('background','#E5E5E5').val(n);
		});
	}
};
// 自动更新库存总数
sp.upTotalStock();
// 自动更新商品价格(最低)
sp.upPrice();

// 获得商品规格与属性
sp.getAttr = function(obj,gid){
	$.post(app+'?m=Admin&c=Goods&a=getAttr', {id:$(obj).val(),gid:gid}, function(data) {
		if(!data){
			$('#attrform').html('');
			$('#specform').html('');
		}else{
			sp.attr_spec = data;
			// 处理属性表单
			sp.createAttrForm();
			// 处理规格表单
			sp.createSpecForm();

			// 如果有商品ID 并且有旧数据 
			if( gid && data.edit ){
				// 设置修改属性
				sp.setAttr();
				// 设置修改库存
				sp.setStock();
			}
		}
	},'json');
}

// 设置修改属性
sp.setAttr = function(){
	attr = sp.attr_spec.edit.attr;
	$(attr).each(function(i){
		var iObj = $('[aid='+attr[i].av_id+']');
		if(iObj.attr('type')=='text'){
			iObj.val(attr[i].value);
		}else{
			iObj.attr('checked',true);
		}
	});
}
// 设置修改库存
sp.setStock = function(){
	stock = sp.attr_spec.edit.stock;
	if(!stock)return;
	for(var i in stock){
		var name = 'sp_';
		for(var j in stock[i].attr){
			name += stock[i].attr[j].attr_id;
		}
		sp.edit_stock_info[name]=stock[i];
	}
	sp.createStock();
}

// 处理属性表单
sp.createAttrForm = function(){
	var attr = sp.attr_spec.attr;
	if(!attr)return;
	var str = '';
	for (var i = 0; i < attr.length; i++) {
		str += '<dl><dt>'+attr[i].attr_name+'</dt>';
		str += '<dd>';
		var value = attr[i].attr_value;
		$(value).each(function(n){
			var id = value[n].id,
				 val = value[n].value,
				 name = 'goods_attr['+id+']',
				 show_type = attr[i].attr_type;
			if(show_type ==0) { // 文本框
				str += '<label><input type="text" value="'+val+'" name="'+name+'"  aid="'+id+'"></label>'
			}else if(show_type==1){ //下拉列表
				str +='<label><input type="checkbox" value="'+val+'" name="'+name+'" aid="'+id+'">'+val+'</label>';
			}				
		});
		str +='</dd></dl>';
	};
	$('#attrform').empty().append(str);
}


// 处理规格表单
sp.createSpecForm = function(){
	var spec = sp.attr_spec.spec;
	if(!spec)return;
	var str = '';
	for (var i = 0; i < spec.length; i++) {
		str += '<dl class="spec_list"><dt>'+spec[i].attr_name+'</dt>';
		str += '<dd>';
		var value = spec[i].attr_value;
		$(value).each(function(n){
			var id = value[n].id,
				 val = value[n].value,
				 attr_aid = value[n].attr_aid;
				 str +='<label><input lab="spec" sp="'+attr_aid+'" type="checkbox" aid="'+id+'"><span lab="'+id+'">'+val+'</span></label>';
		});
		str +='</dd></dl>';
	}
	$('#specform').empty().append(str);
	// 绑定点击操作生成库存表单
	$('[lab=spec]').live('click', sp.createStock);
}

// 生成库存信息
sp.createStock = function (){
	// 判断是否有选中
	var $price = $('[name=goods_price]'),
		 $stock = $('[name=goods_stock]');
	if(!sp.checkState()){
		$('.stock').remove();
		$price.removeAttr('readonly style');
		$stock.removeAttr('readonly style');
		return;
	}else{
		$price.attr('readonly','readonly').css('background','#E5E5E5');
		$stock.attr('readonly','readonly').css('background','#E5E5E5');
	}
	var spec_id=[];
	$('.spec_list input:checked').each(function(){
		var sp = $(this).attr('sp');
		if(!spec_id[sp]){
			spec_id[sp]=[];
		}
		spec_id[sp].push($(this).attr('aid'));
	});
	var dikaData = descartes(spec_id);
	var specData = {};
	for (var i = 0; i < dikaData.length; i++) {
		var name = sp.getStockName(dikaData[i]);
		specData[name]=dikaData[i];
	};
	// 移除取消表单
	sp.rmStockForm(specData);
	// 创建库存表单
	sp.createStockForm(specData);	
}

// 移除取消表单
sp.rmStockForm = function(arr){
	var tmp ='';
	for(var i in arr){
		tmp+=i+',';
	}
	$('.stock tbody tr').each(function(){
		var lab = $(this).attr('lab');
		if(tmp.indexOf(lab) === -1 ){
			$(this).remove();
		}
	});
}


// 获得表单唯一name名
sp.getStockName = function(arr){
	var name = 'sp_';
	for (var i = 0; i < arr.length; i++) {
		name+=arr[i];
	};
	return name;
}


// 创建库存表单
sp.createStockForm = function(arr){
	// 表头如果不存在则创建
	if($('dl.stock').length==0){
		var str = '<dl class="stock"><dt>库存信息</dt><dd><table class="hd-form hd-table hd-table-form"><thead><tr>';
		$('.spec_list dt').each(function(){
			str += '<td>'+$(this).text()+'</td>';
		});
		str +="<td>库存</td><td>价格</td><td>货号</td><thead><tbody></tbody></table></dd></dl>";
		$('#specform').append(str);
	}
	// 产生库存 货号 价格表单
	for(var i in arr){
		var one = sp.edit_stock_info[i];
		var name = 'stock['+i+']';
		if($(".stock tr[lab='"+i+"']").length>0) continue;
		var html ="<tr lab='"+i+"'>";
		for (var j = 0; j < arr[i].length; j++) {
			var id = arr[i][j];
			var t = $('.spec_list span[lab='+id+']').text();
			html +='<td>'+t+'<input type="hidden" name="'+name+'[vid]['+id+']" value="'+t+'"></td>';
			
		};
		// 编辑商品时显示商品旧信息
		
		var num=price=sn=sid='';
		if(one){
			num = one.num;
			price = one.price;
			sn = one.sn;
			sid = one.sid;
		}
		// 加上库存 货号 格格表单
		html += '<td><input type="text" value="'+num+'" name="'+name+'[num]" /></td>';
		html += '<td><input type="text" value="'+price+'" name="'+name+'[price]" /></td>';
		html += '<td><input type="text" value="'+sn+'" name="'+name+'[sn]" /></td>';
		html +='<input type="hidden" name="'+name+'[sid]" value="'+sid+'">';
		html+='</tr>';
		$('.stock tbody').append(html);
	}
	
}

// 判断是否有选中
sp.checkState = function(){
	var state = true;
	$('dl.spec_list').each(function(n){
		if($(this).find('input:checked').size()==0){
			state = false;
		}
	});
	return state;
}




/**
 * 复制属性TR
 * @param  {[type]} s [description]
 * @return {[type]}   [description]
 */
var i = 0
function cpSelf (s) {
	var tr = $(s).parents('tr');
	if($(s).attr('on')){
		var newtr = tr.clone();
		newtr.find('a').removeAttr('on').text('[--]');
		if(newtr.find('.uploadify').size()>0){
			i++;
			newtr.find('.picdiv').html('<input class="onepic" id="i1'+i+'"><div></div>');
		}
		tr.after(newtr);
		upOne();
	}else{
		tr.remove();
	}
}




// 删除上传图片
function delPic (s) {
	var pic = $(s).parent('.pic');
	pic.remove();
}



$(function(){
	//
	$('[name=typeid]').trigger('change');
	var editor = KindEditor.create('textarea[name="content"]',{
		allowFileManager : false,
		resizeType: 1,
		pasteType : 2,
		minHeight :300,
		urlType : 'absolute',
		afterBlur: function(){this.sync();},
		items : [
			'source', 'undo', 'redo', 'preview', 'template', 'cut', 'paste',
			'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright',
			'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
			'superscript', 'clearhtml', 'quickformat', 'selectall', 'fullscreen', '/',
			'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold',
			'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage', 'table', 'hr', 'pagebreak',
			'anchor', 'link', 'unlink'
			],
		});

	// 图片批量上传
	$('#up-pic').uploadify({
		'swf'      : '__STATIC__/uploadify/uploadify.swf',//swf文件路径
		'uploader' : '{:U("upPics",array("session_id"=>session_id()))}',//服务器端脚本文件路径
		'fileSizeLimit': '2MB',//上传附件大小,0不限制,5120B/512KB/2MB/1GB
		'fileTypeExts': '*.jpg;*.jpeg;*.gif;*.png',
		'auto':true, //开启,自动上传
		'multi': true, //开启,多选文件
		'uploadLimit' : 6, //允许上传文件个数
		'buttonText':'批量图片上传',
		'width':'100',
		'height':'24',
		//没有兼容的FLASH时触发
		'onFallback':function(){
		    alert("您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。");
		},
		//上传文件成功后触发（每一个文件都触发一次）
		'onUploadSuccess': function (file, data, response) {
			eval('data=' + data);
			var img='<div class="pic"><i class="del" onclick="delPic(this)"></i><img src="__ROOT__/'+data+'" width="150" height="150" /><input type="hidden" name="pics[]" value="'+data+'" /></div>';
			$('.picbox').append(img);
	    }
	});
	upOne();
})



function upOne(){
		$('.onepic').each(function() {
		var nextDiv = $(this).next('div');
	   $(this).uploadify({
			'swf'      : '__STATIC__/uploadify/uploadify.swf',//swf文件路径
			'uploader' : '{:U("upOne",array("session_id"=>session_id()))}',//服务器端脚本文件路径
			'fileSizeLimit': '2MB',//上传附件大小,0不限制,5120B/512KB/2MB/1GB
			'fileTypeExts': '*.jpg;*.jpeg;*.gif;*.png',
			'auto':true, //开启,自动上传
			'multi': false, //开启,多选文件
			'buttonText':'缩略图上传',
			'width':'100',
			'height':'24',
			'onFallback':function(){
			    alert("您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。");
			},
			//上传文件成功后触发（每一个文件都触发一次）
			'onUploadSuccess': function (file, data, response) {
				eval('data=' + data);
				if(data){
					var img='<div class="pic"><img src="__ROOT__/'+data+'" height="100" /><input type="hidden" name="goods_pic" value="'+data+'" readonly /></div>';
					nextDiv.html(img);
				}else{
					alert('上传失败');
				}
				
		    }
		});
	})
}




// 笛卡尔积函数
function descartes(list)
{
    //parent上一级索引;count指针计数
    var point  = {};
    var result = [];
    var pIndex = null;
    var tempCount = 0;
    var temp   = [];

    //根据参数列生成指针对象
    for(var index in list)
    {
        if(typeof list[index] == 'object')
        {
            point[index] = {'parent':pIndex,'count':0}
            pIndex = index;
        }
    }

    //单维度数据结构直接返回
    if(pIndex == null)
    {
        return list;
    }

    //动态生成笛卡尔积
    while(true)
    {
        for(var index in list)
        {
            tempCount = point[index]['count'];
            temp.push(list[index][tempCount]);
        }

        //压入结果数组
        result.push(temp);
        temp = [];

        //检查指针最大值问题
        while(true)
        {
            if(point[index]['count']+1 >= list[index].length)
            {
                point[index]['count'] = 0;
                pIndex = point[index]['parent'];
                if(pIndex == null)
                {
                    return result;
                }

                //赋值parent进行再次检查
                index = pIndex;
            }
            else
            {
                point[index]['count']++;
                break;
            }
        }
    }
}